Laboratório: Calculadora de Roteamento de Dijkstra

O Objetivo 🎯

  • A Tarefa: Encontre a melhor rota a partir de um servidor de origem `S` até todos os outros servidores.
  • A Saída: Para cada servidor `i`, você deve calcular:
    • Latência Total: O custo mínimo (caminho mais curto) desde `S` até `i`.
    • Próximo Salto: O *primeiro servidor* desse caminho mais curto.
  • Exemplo: Se o melhor caminho de `S` até `D` for `S -> A -> B -> D`, o **Próximo Salto** é `A`.

A Rede 💾

Vamos usar uma Lista de Adjacência para armazenar a rede.
  • Servidores são nós.
  • Conexões são arestas bidirecionais.
  • A latência é um peso positivo.
// Ligações: 0-1 (10ms), 0-2 (3ms)
adj = [
0:[(1, 10), (2, 3)],
1:[(0, 10)],
2:[(0, 3)],
...
]

Formato da Saída ⚙️

Você deve imprimir `V` linhas. Cada linha `i` corresponde ao servidor `i`.

  • [latência] [próximo_salto]

    Para um nó alcançável.

  • 0 -1

    Se o nó for a própria fonte `S`.

  • -1 -1

    Se o nó for inacessível a partir de `S`.